package com.xgzit.xgzmall.seckill;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 整合sentinel
 * 1、导入依赖 spring-cloud-starter-alibaba-sentinel
 * 2、下载对应 的 sentinel-dashboard
 * 3、配置sentinel 控制台地址信息
 * 4、在 dashboard 调整 流控规则 【默认流控规则保存在内存中，重启失效】
 * 5、使用 endpoint 需要添加 spring-boot-starter-actuator 并配置 运行endpoints的访问
 * 6、自定义 返回数据
 * 7、使用sentinel 保护feign远程调用 熔断：
 *      1)、调用方熔断保护： feign.sentinel.enabled=true   设置好 feign调用失败的回调函数
 *      2）、调用方手动指定远程服务的 降级策略. 远程服务被降级处理，触发熔断回调方法
 *      3）、设置远程服务  超大流量的时候，必须牺牲一些远程服务。在服务提供方指定降级策略
 *          提供方是在运行，但是不运行业务逻辑，返回的是默认的熔断数据（限流后的数据）
 * 8、自定义受保护的资源
 *      1)、try catch 方式
 *      2）、基于注解  @sentinelResource(value="资源名")
 * @author xushuai
 */

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) // 去掉数据源，不访问数据库
public class XgzmallSeckillApplication {

    public static void main(String[] args) {
        SpringApplication.run(XgzmallSeckillApplication.class, args);
    }

}
